package com.guomao.work;

import com.guomao.util.ConnectionUtil;
import com.rabbitmq.client.*;

import java.io.IOException;
/**
 * 消费者1类，用于从RabbitMQ队列中消费消息
 * 这是一个工作队列(Work Queue)的消费者示例
 */
public class Consumer1 {
  
    static final String QUEUE_NAME = "work_queue";  
  
    // 定义队列名称，使用final修饰表示常量
    public static void main(String[] args) throws Exception {
  
    /**
     * 程序主入口
     * @param args 命令行参数
     * @throws Exception 可能抛出的异常
     */
        Connection connection = ConnectionUtil.getConnection();
  
        // 获取RabbitMQ连接
        Channel channel = connection.createChannel();
  
        // 创建通道
        channel.queueDeclare(QUEUE_NAME,true,false,false,null);
  
        // 声明队列
        // 参数：队列名称、是否持久化、是否独占、是否自动删除、额外参数
        Consumer consumer = new DefaultConsumer(channel){
  
        // 创建消费者
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
            /**
             * 重写处理消息的方法
             * @param consumerTag 消费者标签
             * @param envelope 信封信息，包含消息属性
             * @param properties 消息属性
             * @param body 消息内容
             * @throws IOException 可能抛出的IO异常
             */

                System.out.println("Consumer1 body："+new String(body));  
  
                // 打印接收到的消息内容
            }
  
        };  
  
        channel.basicConsume(QUEUE_NAME,true,consumer);  
  
        // 开始消费消息
        // 参数：队列名称、是否自动确认、消费者
    }
  
}